//
// @author 风杨
// @date 22-9-2 下午3:04
// @see <a href="yueny09@163.com">mailTo: yueny09@163.com</a>
//
use std::fs;
use std::fs::{File, OpenOptions};
use std::io;
use std::io::{ErrorKind, Read, Write};

pub fn method_() -> Result<String, io::Error> {
    let data = String::from("rfghjkfvbn");

    println!("###################");
    println!("method_");
    println!("###################");
    let fileName = "aaa.txt";

    File::create(&fileName).unwrap().write(&data.as_bytes()).unwrap();

    let mut s = String::new();

    File::open(&fileName)?.read_to_string(&mut s)?;
    println!("s:{}", s);
    assert_eq!(&data, &s);

    let ch = last_char_of_first_line(&data);
    println!("最后一个字符:{}.", ch.unwrap());

    fs::remove_file(&fileName).expect("TODO: panic message");

    Ok(s)
}

// 最后一个字符
fn last_char_of_first_line(text: &str) -> Option<char> {
    text
        // lines 方法，这会返回一个字符串中每一行的迭代器。
        .lines()
        // 迭代器 next 来获取迭代器中第一个值
        .next()
        // 如果 text 是空字符串，next 调用会返回 None，此时我们可以使用 ? 来停止并从 last_char_of_first_line 返回 None。
        // 如果 text 不是空字符串，next 会返回一个包含 text 中第一行的字符串 slice 的 Some 值。? 会提取这个字符串 slice
        ?
        // 此时值为字符串 Slice, 调用 Slice的 chars 来获取字符的迭代器
        .chars().last()
}